package java_thinking.unit_21._21_5;

import java.util.concurrent.BlockingQueue;

/**
 * @Desc:   5-10 恢复中断状态避免中断
 *          1.在使用静态的 interrupted 时应该小心，因为它会清除当前线程的中断状态，如果在调用 interrupted 时
 *            返回了 true ，那么除非你想屏蔽这个中断，否则必须对它进行处理--可以抛出 InterruptedException
 *            或者通过再次调用 interrupt 来回复中断状态；
 * @author: cww
 * @DateTime: 2019/6/5 9:26
 */

public class TaskRunnable implements Runnable {
    BlockingQueue<Task> queue;
    @Override
    public void run() {
        try {
            processTask(queue.take());
        } catch (InterruptedException e) {
            // restore interrupted status 恢复被中断的状态
            Thread.currentThread().interrupt();
        }
    }
    void processTask(Task task) {
        // Handle the task
    }

    interface Task {
    }
}
